package georeduy.clases;


import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

import javax.persistence.ManyToOne;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
public class Oferta implements Serializable
{
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY )
	@Column(name="ID" ,nullable=false )
	private Integer id ;
	
	private String nombre;
	private String descripcion;
	private Date comienzo;
	private Date fin;
	private String moneda;
	private float costo;
	
	@OneToOne(cascade = CascadeType.ALL)
	private Imagen imagen;

	@ElementCollection
	@LazyCollection(LazyCollectionOption.FALSE)
	private List<String> categorias;
	
	@ManyToOne
	private Local local;
	
	public Oferta() {
		super();
	}

	public Oferta(String nombre, String descripcion, Date comienzo, Date fin,
			Imagen imagen, String moneda, float costo, List<String> categorias, Local local) {
		super();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.comienzo = comienzo;
		this.fin = fin;
		this.imagen = imagen;
		this.moneda = moneda;
		this.costo = costo;
		this.categorias = categorias;
		this.local = local;
	}




	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Date getComienzo() {
		return comienzo;
	}

	public void setComienzo(Date comienzo) {
		this.comienzo = comienzo;
	}

	public Date getFin() {
		return fin;
	}

	public void setFin(Date fin) {
		this.fin = fin;
	}
	

	public Imagen getImagen() {
		return imagen;
	}



	public void setImagen(Imagen imagen) {
		this.imagen = imagen;
	}





	public String getMoneda() {
		return moneda;
	}




	public void setMoneda(String moneda) {
		this.moneda = moneda;
	}




	public float getCosto() {
		return costo;
	}

	public void setCosto(float costo) {
		this.costo = costo;
	}


	public Local getLocal() {
		return local;
	}

	public void setLocal(Local local) {
		this.local = local;
	}




	public List<String> getCategorias() {
		return categorias;
	}




	public void setCategorias(List<String> categorias) {
		this.categorias = categorias;
	}

	
	
}
